package com.itheima.datatype_demo;

/*
    1 分别定义含有Player，Mp3Player , IPod参数的方法，并调用传入实参进行测试
    2 定义一个学生类，里面定义含有Player， Mp3Player,IPod类型的成员变量，创建学生对象并给成员变量赋值

 */
public class Demo1 {
    public static void main(String[] args) {
        usePlayer(new IPod());
        useMp3Player(new IPod());
        useIPod(new IPod());

        System.out.println("============");

        // 空参构造 + set方法赋值
        Student s = new Student();
        s.setPlayer(new IPod());
        s.setMp3Player(new IPod());
        s.setiPod(new IPod());

    }

    // 方法的参数是一个接口 , 传入此接口的实现类对象即可
    public static void usePlayer(Player player) {

    }

    // 方法的参数是一个抽象类 , 需要传入此抽象类的子类对象
    public static void useMp3Player(Mp3Player player) {

    }

    // 方法的参数是一个具体类 , 传入此类对象
    public static void useIPod(IPod player) {

    }
}

// 接口
interface Player {
    public abstract void play();
}

// 抽象类
abstract class Mp3Player implements Player {
}

// 具体类
class IPod extends Mp3Player {
    @Override
    public void play() {
        System.out.println("播放音乐...");
    }
}


